<?php
if ( !defined('IN_SCRIPT') || !$current_user) { header("Location: $current_location"); exit; }
                                                           
$page_title = CAN_EDIT ? $lang['presents_title_all_my'] : $lang['presents_title_all'] ;
$smarty->assign('content', 'presents');


$page_option = $mode;
$sel_option = ''; 
switch ($mode) {
    case 'actual':      $sel_option = ' AND (gived.amount_accepted IS NULL or p.`amount` - gived.amount_accepted > 0) '; 
                        $page_title = $lang['presents_title_actual']; 
                        break;
    case 'waiting':     $sel_option = ' AND gived.amount_proposed is not null and gived.amount_proposed > 0 '; 
                        $page_title = $lang['presents_title_waiting'];
                        break; 
    case 'approved':    $sel_option = ' AND gived.amount_approved is not null and gived.amount_approved > 0 '; 
                        $page_title = $lang['presents_title_approved'];
                        break;
    case 'presented':   $sel_option = ' AND gived.amount_presented is not null and gived.amount_presented >= p.`amount` '; 
                        $page_title = $lang['presents_title_presented'];
                        break; 

    default: $page_option = ''; break;
}


                    // DONE: добавить дату добавления подарка, выводить последние вверху списка
                    // DONE: описание должно сохранять форматирование
/*
if ($REQUEST_METHOD == 'POST') {     
    switch ($mode) {
        case 'add':
            if(CAN_EDIT) {              
                $pr['name'] = $pr['name'] == $lang['pr_name_hint'] ? '' : preg_replace("/[^-\p{L}\p{N} ,\.()!?:_]/u", "", $pr['name']);
                $pr['description'] = $pr['description'] == $lang['pr_desc_hint'] ? '' : $pr['description'];
                $pr['description'] = strip_tags($_POST['pr']['description'], '<p><strong><em><span><ul><ol><li><a>');
                $pr['description'] = safe_to_query($pr['description']); 
                $pr['amount'] = $pr['amount'] == $lang['pr_count_hint'] ? '' : $pr['amount'];
                $pr['link'] = $pr['link'] == $lang['pr_link_hint'] ? '' : filter_var($pr['link'], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED);
                $oc['name'] = $oc['name'] == $lang['pr_occasion_hint'] ? '' : preg_replace("/[^-\p{L}\p{N} ,\.()!?:_]/u", "", $oc['name']);
                $oc['date'] = $oc['date'] == $lang['pr_occasion_date_hint'] ? '' : $oc['date'];
                
                
                field_validator($lang['present_name'], $pr['name'], "name_unicode", 4, 100);
                field_validator($lang['present_desc'], $pr['description'], "string", '', 500, 0);
                field_validator($lang['present_amount'], $pr['amount'], "number", '', 11, 0);
                if((int)$pr['amount'] < 1) $pr['amount'] = 1;
                field_validator($lang['occasion'], $oc['name'], "name_unicode", '', 50, 0);
                field_validator($lang['occasion_date'], $oc['date'], "date", '', 10, 0);
                
                if($pr['link'] === false) {
                    add_message($lang['wrong_url']);
                    $pr['link'] = '';
                }  
                $pr['link_hash'] = $pr['link'] != '' ? uniqid(rand(), true) : '';
                $pr['user'] = $_SESSION['id'];
                if($messages)
                    $smarty->assign('have_errors', true);
                else {
                    // добавление события, если есть
                    $idevent = '';
                    if(!empty($oc['name'])) {
                        // проверять дату в зависимости от локали
                        //if (preg_match("/^([0-9]{1,2})[.,]([0-9]{1,2})[.,]([0-9]{4})$/", $oc['date'], $mch))
                        if(strtotime($oc['date']))
                            $oc['date'] = gmdate("Y-m-d", strtotime($oc['date'])); // "$mch[3]-$mch[2]-$mch[1]";
                        else
                            unset($oc['date']);
                            
                        if(isset($pr['idevent']) && preg_match("/^[0-9]{1,10}$/", $pr['idevent'])) {
                            db_update_by_array('events', $oc, "`user`=$_SESSION[id] AND `idevents`=".$pr['idevent']);
                            $idevent = $pr['idevent']; 
                        } else {
                            $oc['user'] = $_SESSION['id'];
                            $idevent = db_insert($oc, true, 'events');
                        }
                    }
                    if(!empty($idevent))
                        $pr['idevent'] = $idevent;
                    else
                        unset($pr['idevent']);
                        
                    // добавление подарка
                    $last_present = '';
                    if(isset($pr['idpresents']) && preg_match("/^[0-9]{1,10}$/", $pr['idpresents'])) {    
                        db_update_by_array('presents', $pr, "`user`=$_SESSION[id] and `idpresents`=".$pr['idpresents']); 
                        $last_present = $pr['idpresents'];
                    } else {                       
                        $pr['date_add'] = gmdate('Y-m-d H:i:s');
                        $last_present = db_insert($pr, true, 'presents');
                    }
                    header("Location: $current_location/index.php?id=$_SESSION[id]&$place_name=presents&prid=$last_present");
                    exit;
                }
            }
            break; 
        case 'view': // AJAX only
            $default_template = 'present_detailed.tpl'; 
            break;
        case 'give': // AJAX only
            
            $prcount = (int)get_param('prcount');
            
            if(LOGGED_IN && !empty($current_user) && !empty($current_gift) && $prcount > 0 && $current_user == $current_gift['user'] && $current_user != $_SESSION['id']) {
                // проверка - дарил ли пользователь уже этот подарок
                $result = db_query("SELECT * FROM presented WHERE user_presenter =$_SESSION[id] AND idpresent =$current_gift[idpresents]");
                $row=mysql_fetch_array($result);
                if(empty($row) && db_insert("INSERT INTO `presented` (`amount`, `user_presenter`, `idpresent`, `proposal_date`) VALUES ($prcount, $_SESSION[id], $current_gift[idpresents], UTC_TIMESTAMP())", false))
                    die("OK");
            }
            die("NOT OK"); 
            
            break;   
        default: break;
    }
    
}
*/
if($mode == 'delete' && !empty($current_gift) && CAN_EDIT) {
    db_query("DELETE FROM `presents` WHERE `idpresents`=0".$current_gift['idpresents']." AND `user`=0".$_SESSION['id']);
    db_query("DELETE FROM `presented` WHERE `idpresent`=0".$current_gift['idpresents']);
    // удаление файлов на сервере
    if(isset($current_gift['image']) && file_exists(GIFT_IMAGES_DIR.'/'.$current_gift['image'])) 
        unlink(GIFT_IMAGES_DIR.'/'.$current_gift['image']);
    if(isset($current_gift['thumb']) && file_exists(GIFT_IMAGES_DIR.'/'.$current_gift['thumb'])) 
        unlink(GIFT_IMAGES_DIR.'/'.$current_gift['thumb']); 
    
    header("Location: $current_location/index.php?id=$_SESSION[id]&$place_name=presents&$mode_name=$page_option");
    exit; 
}


 /*                         
$presents_list = array();
$result = db_query("SELECT SQL_CALC_FOUND_ROWS p. * , e.name AS ev_name, e.date AS ev_date, gived.amount_accepted, gived.amount_approved, gived.amount_presented, 
                           IF (gived.amount_accepted IS NULL , p.`amount` , p.`amount` - gived.amount_accepted) AS amount_left,
                           mygift.`approved` as mygift_approved, mygift.`amount` as mygift_amount,
                           gived.amount_total - gived.amount_accepted as amount_wait
                    FROM `presents` p
                    LEFT JOIN `events` e ON e.`idevents` = p.`idevent` 
                    LEFT JOIN (SELECT `idpresent` , sum( `amount` ) AS amount_total, 
                                      sum(IF (`approved` IS NOT NULL AND `approved` != 'N', `amount` , 0) ) AS amount_accepted, 
                                      sum(IF (`approved` = 'A', `amount` , 0) ) AS amount_approved, 
                                      sum(IF (`approved` = 'P', `amount` , 0) ) AS amount_presented "./*, 
                                      sum(IF (`user_presenter` =10 AND `approved` = 'N', `amount` , 0) ) AS my_amount_proposed, 
                                      sum(IF (`user_presenter` =10 AND `approved` = 'P', `amount` , 0) ) AS my_amount_presented  */
 /*                              "FROM presented
                               GROUP BY `idpresent`) gived ON gived.`idpresent` = p.idpresents
                    LEFT JOIN (SELECT `idpresent` , `approved` , `amount` 
                               FROM `presented` 
                               WHERE `user_presenter` =".(LOGGED_IN ? $_SESSION['id'] : -100).") mygift on mygift.`idpresent` = p.idpresents
                    WHERE p.`user` =$current_user 
                          $sel_option
                    ORDER BY p.`date_add` DESC LIMIT ".abs(($page-1)*$per_page).",$per_page");      

/*"SELECT p . * , e.name AS ev_name, e.date AS ev_date, 1 as amount_left
                    FROM `presents` p
                    LEFT JOIN `events` e ON e.`idevents` = p.`idevent` 
                    WHERE p.`user` =$current_user
                    ORDER BY p.`date_add` DESC"*/
/*while ($row = mysql_fetch_array($result)) {
    $presents_list[$row['idpresents']] = $row; 
    $presents_list[$row['idpresents']]['ev_date'] = (!empty($row['ev_date']) && (strtotime($row['ev_date']) > 0)) ? strftime("%x", strtotime($row['ev_date'])) : ''; 
    $presents_list[$row['idpresents']]['short_name'] = ShortenText($presents_list[$row['idpresents']]['name'], 40);
    $presents_list[$row['idpresents']]['short_link'] = ShortenText($presents_list[$row['idpresents']]['link'], 30, false);
    if($row['idpresents'] == $current_gift['idpresents']) {
        $smarty->assign('present_id', $current_gift['idpresents']);
        
        // определяем - можно ли текущему пользователю дарить этот подарок
            $can_give = '';
            if($presents_list[$row['idpresents']]['amount_presented'] >= $presents_list[$row['idpresents']]['amount']) {
                $can_give = $lang['gift_allready_gived']; // "Этот подарок уже вручен.";
                if($presents_list[$row['idpresents']]['amount_presented'] > 1 && $presents_list[$row['idpresents']]['mygift_approved'] == 'P' && $presents_list[$row['idpresents']]['amount_presented'] < $presents_list[$row['idpresents']]['mygift_amount'])
                    $can_give .= '<br>'.sprintf($lang['gift_x_from_y'], $presents_list[$row['idpresents']]['amount_presented'], $presents_list[$row['idpresents']]['amount_presented']); //"Из %s вы подарили %s"
            } 
            elseif ($presents_list[$row['idpresents']]['mygift_approved'] == 'P')
                $can_give = $lang['gift_me_allready_gived']; // Вы уже вручили этот подарок
            elseif ($presents_list[$row['idpresents']]['mygift_approved'] == 'N')
                $can_give = $lang['gift_me_proposed']; // Вы предложили подарить этот подарок, но еще не получили одобрение
            elseif ($presents_list[$row['idpresents']]['mygift_approved'] == 'A')
                $can_give = $lang['gift_me_approved']; // Вы получили одобрение на дарение этого подарка
            elseif ($presents_list[$row['idpresents']]['amount_left'] <=0)
                $can_give = $lang['cant_give_no_more'];
            elseif (!LOGGED_IN)    // не залогинен
                $can_give = sprintf($lang['cant_give_not_loggedin'], "$current_location/$index_script?$place_name=auth");
            elseif($current_gift['user'] == $_SESSION['id'])                // нельзя дарить самому себе
                $can_give = $lang['cant_give_myself'];    
            $smarty->assign('can_give', $can_give);
    }   
}       

$result=db_query("SELECT FOUND_ROWS()");
$row = mysql_fetch_array($result);  // количество товаров всего
$p_count = ceil($row[0]/$per_page); // количество страниц
        */

$presents_list = get_gifts(false, $sel_option);
$p_count = ceil($presents_list['total_rows']/$per_page); // количество страниц
unset($presents_list['total_rows']);

$smarty->assign('page', $page);
$smarty->assign('presents_list', $presents_list);         
$smarty->assign('page_count', $p_count);         
$smarty->assign('page_option', $page_option);         
$smarty->assign('nav_url', $current_location.'/'.$current_user.($page_option ? '/'.$page_option : '').($p_count > 0 ? '/page': ''));         
if(!empty($page_option)) $smarty->assign('mode', $page_option);

// DONE: запретить изменять подарок, если по нему уже есть предложения
// TODO: если выбирается один человек (друг) для подарка, тогда подтверждение не нужно
// DONE: при переключении страниц не отображаются детали подарка
// DONE: навигатор
// DONE: кнопка "редактировать" - дизайн + 

// DONE: поменять хинты в меню в зависимости от того, на своей странице находится юзер или нет
// DONE 5: выводить список юзеров, которые предложили подарок (если свой подарок - имя, чужой - кол-во предложений)
// DONE: добавить на кнопку "откликнувшиеся" количество откл. юзеров
// DONE: кнопки работы с предложениями

// DONE 2: ссылка на выбранное желание для "Желаю подарить" - выводить корректно
// DONE 2: переход по ссылке типа "http://gifts/6/17" не должен отображать чужие желания
// DONE 2: пофиксить ссылки для перехода по страницам в "Желаю подарить"
// DONE 2: кнопку "Удалить желание" в "Желаю подарить" переделать в "Отказаться от предложения" 
// DONE 1: для англ. версии вылетает ошибка при выборе даты - "Field Occasion date should be formatted like DD.MM.YYYY"
// DONE 2: отображать количество в меню "Желаю подарить"
?>
              
              
              